package dominio.DAO;

import java.util.ArrayList;
import java.util.List;

import org.joda.time.LocalDate;

import dominio.Persona;

public class PersonaDAO {

    private BaseDatosMock bdMock;

    public void setBaseDatosMock(BaseDatosMock bdMock) {
        this.bdMock = bdMock;
    }

    public void crearPersona(Persona persona) {
        bdMock.devolverPersonas().add(persona);
    }
    
	public void modificarPersona(String codigo, String nombres, String apellidos, String pasaporte, String telefono, String sexo, String correo, 
    		String direccion, String ciudad, String estado, String pais, LocalDate fechaNacimiento, String comentarios){
		
		Persona persona = obtenerPersonaPorCodigo(codigo);
		persona.setNombres(nombres);
		persona.setApellidos(apellidos);
		persona.setPasaporte(pasaporte);
		persona.setTelefono(telefono);
		persona.setSexo(sexo);
		persona.setCorreo(correo);
		persona.setDireccion(direccion);
		persona.setCiudad(ciudad);
		persona.setEstado(estado);
		persona.setPais(pais);
		persona.setFechaNacimiento(fechaNacimiento);
		persona.setComentarios(comentarios);
	}
    
	public List<Persona> devolverListaBusquedaPersonasPorApellidos(String apellidos){
        
		List<Persona> resultadoBusquedaPersonas = new ArrayList<Persona>();
		
		for(int i = 0; i < devolverCantidadPersonas(); i++){            
        	Persona p = devolverPersonas().get(i);          
        
        	if(p.getApellidos().indexOf(apellidos) > -1){
            	resultadoBusquedaPersonas.add(p);
            }
        }		
		return resultadoBusquedaPersonas;
    }
    
	public void eliminarPersona(String codigo){
        for(int i = 0; i < devolverCantidadPersonas(); i++){            
        	Persona p = devolverPersonas().get(i);          
            if(p.getCodigo().equals(codigo)){
                devolverPersonas().remove(i);
            }
        }
	}
    
	public Persona obtenerPersonaPorCodigo(String codigo){
		Persona persona = null;
		for(int i = 0; i < devolverCantidadPersonas(); i++){    
			Persona p = devolverPersonas().get(i);            
            if(p.getCodigo().equals(codigo)){
            	persona = p;
                break;
            }
		}
		return persona;
	}
    
	public int devolverCantidadPersonas(){
        return devolverPersonas().size();
    }

    public List<Persona> devolverPersonas() {
        return bdMock.devolverPersonas();
    }
    
    public void limpiaListaPersona() {
        bdMock.devolverPersonas().clear();
    }

}